package observer.advanced;

/**
 * 抽象通知者不再依赖抽象观察者
 * 通过委托来实现观察者与通知者解耦
 * @author Chen Guang
 * @date 2019/4/9 0009 下午 15:45
 */
public interface Subject {
    /**
     * 通知方法
     */
    void notifyObserver() throws Exception;

    /**
     * 增加观察者
     * @param object 对象
     * @param methodName 方法名
     * @param args 参数
     */
    void attach(Object object,String methodName,Object...args);

    /**
     * 获取通知者状态
     * @return Str
     */
    String getSubjectState();

    /**
     * 设置通知者状态
     * @param str 状态
     */
    void setSubjectState(String str);
}
